package com.suiwei.base.controller;

import com.suiwei.base.config.User;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Map;


/**
 * @author suiwei
 * @date 2022-10-22 22:28
 */
@RestController
@RequestMapping("/common")
public class CommonController {
    /**
     * spring的注解@value，配合SpEl读取配置
     */
    @Value("${tempDir}")
    private String name;
    @Value("${hobby[1]}")
    private String hobby;

    @Value("${vnpt.name}")
    private String vnptName;

    /**
     * 配置中的一部分，映射成一个实体
     */
    @Autowired
    private User user;
    /**
     * 创建记录日志的对象
     * logger要导入slf4j接口
     * 实际开发中，不用，直接用lombok的上@Slf4j注解即可
     */
    private static final Logger log = LoggerFactory.getLogger(CommonController.class);
    @GetMapping("/header")
    public void header(@RequestHeader Map<String, String> headers){
        headers.forEach((key, value) -> {
            System.out.println(key+":"+value);
        });
    }

    /**
     * 日志级别一共有6个，有2个不用的
     */
    @GetMapping("/log")
    public void log(){
        System.out.println(vnptName);
        //log.trace();级别太低，不会使用
        //开启debug级别，配置文件中配置
        log.debug("debug");
        //系统启动默认用info级别，所以debug级别的不打印，配置以后才能打印
        log.info("info");
        log.warn("debug");
        log.error("debug");
        //fatal灾难级别，非常严重，一般记录不到，也不用。已经合并到error了
    }

}
